package repository

import (
	"SE/model"
	"fmt"
	"gorm.io/gorm"
)

// UserRepository 接口定义了用户存储库所需的方法
type UserRepository interface {
	// UserExists 检查用户名和电话是否已存在
	UserExists(username, mobile string) bool
	// CreateUser 创建新用户
	CreateUser(user *model.User) error
}

// userRepository 结构体实现了UserRepository接口
type userRepository struct {
	db *gorm.DB
}

// NewUserRepository 构造函数，返回一个新的UserRepository实例
func NewUserRepository(db *gorm.DB) UserRepository {
	return &userRepository{db: db}
}

// UserExists 检查用户名和电话是否已存在
func (ur *userRepository) UserExists(username, mobile string) bool {
	var count int64
	fmt.Println("username", username, "mobile", mobile)
	err := ur.db.Model(&model.User{}).Where("user_name = ? OR mobile = ?", username, mobile).Count(&count).Error
	if err != nil {
		return false
	}
	fmt.Println("count", count)
	return count > 0
}

// CreateUser 创建新用户
func (ur *userRepository) CreateUser(user *model.User) error {
	if ur.UserExists(user.UserName, user.Mobile) {
		return gorm.ErrDuplicatedKey
	}
	return ur.db.Create(user).Error
}
